feat(objectql): package-first authoring — reject runtime creates into read-only packages (ADR-0070 D1/D2)#2285
Merged
Merged
Conversation
…able_package_required (ADR-0070 D1/D2) Replaces the #2252 coerce-to-null stopgap with an actionable rejection, and generalizes isLoadedPackage into isWritablePackage (drops the owns-an-object heuristic that was the read-only-after-publish trap). Updates the repo-path tests to assert rejection. Null stays a legacy overlay destination (D5 retires). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
📓 Docs Drift CheckThis PR changes 1 package(s): 14 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:
|
os-zhuang
added a commit
that referenced
this pull request
Jun 24, 2026
…ied (#2292) Status Proposed → Accepted. Adds an Implementation status section (P1 kernel #2285, P2 studio objectui#1970, P3 ai cloud#479/#481, tests cloud#480; live dogfood: magic build + iterative changes all in one app.iojn base, no com.workspace/orphans) and annotates the rollout (D1–D3 done, D4–D6 remaining). Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Implements ADR-0070 D1 (no orphans) + D2 (writable-package predicate) in the kernel.
writable_package_required(status 422) instead of silently coercingpackage_idtonull(the fix(objectql): don't stamp runtime-authored metadata into a loaded code package #2252 stopgap). The coercion unblocked editing but scattered orphans into a package-less bucket with no container to delete (chore(spec): prune 7 dead field governance/compliance props (dead-surface plan) #1946).isLoadedPackage→isWritablePackage(D2): writable unless the package is a booted code package (engine manifest map) or asystem/cloud-scoped installed package. The old "owns ≥1 registered object" heuristic is dropped — it was the read-only-after-publish trap (fix(objectql): don't stamp runtime-authored metadata into a loaded code package #2252), since a writable base accrues registered objects once its drafts publish.override-artifactoverlays (ADR-0005) are unchanged;nullis still accepted as the legacy org-overlay destination (D5 retires it after the orphan migration).Why
A Studio business-user dogfood pass surfaced a bug family rooted in the absence of a package-first contract: read-only-after-publish (#2252), the orphan pile with no delete unit (#1946), and AI's
com.workspacecatch-all. Seedocs/adr/0070-package-first-authoring.md.Verification
pnpm --filter @objectstack/objectql test— 706 green (updatedprotocol-save-meta-repo-path*.test.tsto assert rejection instead of null-coercion).tscclean. Kernel is the enforcement backstop; the Studio (objectui) and AI (cloud) surfaces resolve/redirect to a base before hitting it.Part of the ADR-0070 package-first epic (kernel slice). Studio + AI surface PRs follow.
🤖 Generated with Claude Code